﻿using LiuQiuRong.Chat.Infrastructures.Utilities.Models;
using SqlSugar;
using System.Data;

namespace LiuQiuRong.Chat.Infrastructures.DataStore
{
    /// <summary>
    /// 数据存储器实例
    /// </summary>
    public partial class DataAccessor : UnmanagedDispose, IDataAccessor
    {
        /// <summary>
        /// 数据库操作上下文
        /// </summary>
        public ISqlSugarClient DbContext { get; set; }

        /// <summary>
        /// 数据库连接起始点，标记作用，智能判断何时开启/关闭数据库连接
        /// </summary>
        public string StartPoint { get; set; }

        /// <summary>
        /// 释放数据库非托管资源，用于当前请求完毕后自动释放
        /// </summary>
        /// <param name="isDisposing">标识，是否已经释放</param>

        protected override void Dispose(bool isDisposing)
        {
            if (!isDisposing) return;   // 如果已经释放，结束执行
            if (DbContext == null) return;  // 如果数据库连接对象为空，结束执行
            if (DbContext.Ado.Connection.State != ConnectionState.Open) return; // 如果数据库连接对象非打开状况，结束执行
            DbContext.Close();  // 关闭数据库连接
            DbContext.Dispose();    // 释放内存
        }
    }
}
